Node.js এ request (req) এবং response (res) অবজেক্টগুলি HTTP সার্ভার পরিচালনা করতে ব্যবহৃত হয়। যখন কোন ক্লায়েন্ট (যেমন, ব্রাউজার) সার্ভারে রিকোয়েস্ট পাঠায়, তখন সার্ভার সেই রিকোয়েস্টের জন্য একটি রেসপন্স তৈরি করে পাঠায়। এই রিকোয়েস্ট এবং রেসপন্স অবজেক্টগুলি HTTP রিকোয়েস্ট এবং রেসপন্স সাইকেলকে হ্যান্ডেল করার জন্য ব্যবহৃত হয়।
১. Request Object (req)
Request Object হল ক্লায়েন্ট (যেমন ব্রাউজার) থেকে সার্ভারে পাঠানো HTTP রিকোয়েস্টের তথ্য ধারণকারী অবজেক্ট। এটি রিকোয়েস্টের সমস্ত তথ্য যেমন URL, HTTP মেথড (GET, POST, PUT, DELETE), কুয়েরি প্যারামিটার, হেডার, এবং বডি ইত্যাদি ধারণ করে।
Request Object এর কিছু গুরুত্বপূর্ণ প্রপার্টি এবং মেথড:
req.method: HTTP রিকোয়েস্ট মেথড (যেমন GET, POST, PUT, DELETE) ধারণ করে।req.url: রিকোয়েস্ট URL ধারণ করে।req.headers: রিকোয়েস্ট হেডার ধারণ করে।req.query: URL কুয়েরি প্যারামিটার ধারণ করে (যেমন?name=valueঅংশ)।req.params: রিকোয়েস্ট পাথের প্যারামিটার ধারণ করে (যেমন/users/:idপাথ থেকেidপ্যারামিটার)।req.body: রিকোয়েস্ট বডি (যা POST বা PUT রিকোয়েস্টে পাঠানো ডেটা) ধারণ করে (যতটুকু অ্যাপ্লিকেশন JSON বা URL-এনকোডেড পদ্ধতিতে ডেটা পাঠায়)।
উদাহরণ:
const http = require('http');
const server = http.createServer((req, res) => {
console.log('Request Method:', req.method); // HTTP মেথড (GET, POST, ইত্যাদি)
console.log('Request URL:', req.url); // রিকোয়েস্ট URL
console.log('Request Headers:', req.headers); // রিকোয়েস্ট হেডার
// কুয়েরি প্যারামিটার (যেমন /search?query=hello)
if (req.url.startsWith('/search')) {
let query = new URL(req.url, `http://${req.headers.host}`).searchParams.get('query');
console.log('Search Query:', query); // 'hello'
}
res.end('Request data received.');
});
server.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});এই কোডে, req.method, req.url, এবং req.headers এর মাধ্যমে রিকোয়েস্টের বিভিন্ন তথ্য লগ করা হচ্ছে। কুয়েরি প্যারামিটার req.url থেকে URLSearchParams ব্যবহার করে পাওয়া যাচ্ছে।
২. Response Object (res)
Response Object হল সেই অবজেক্ট যা সার্ভার ক্লায়েন্টকে রিকোয়েস্টের প্রতিক্রিয়া হিসেবে পাঠায়। এটি রিকোয়েস্টের জন্য রেসপন্সের স্ট্যাটাস কোড, হেডার এবং বডি তৈরি করতে ব্যবহৃত হয়।
Response Object এর কিছু গুরুত্বপূর্ণ প্রপার্টি এবং মেথড:
res.statusCode: রেসপন্স স্ট্যাটাস কোড সেট করে (যেমন 200, 404, 500 ইত্যাদি)।res.statusMessage: রেসপন্স স্ট্যাটাস মেসেজ সেট করে (যেমন 'OK', 'Not Found' ইত্যাদি)।res.setHeader(name, value): রেসপন্স হেডার সেট করে (যেমন Content-Type, Authorization ইত্যাদি)।res.write(data): রেসপন্স বডিতে ডেটা লেখার জন্য ব্যবহৃত হয় (যেমন HTML, JSON ইত্যাদি)।res.end(): রেসপন্স পাঠানো সম্পন্ন করার জন্য ব্যবহৃত হয়।res.json(data): JSON ডেটা পাঠানোর জন্য ব্যবহৃত হয় (Express.js এ ব্যবহৃত হয়)।res.redirect(url): অন্য URL তে রিডাইরেক্ট করার জন্য ব্যবহৃত হয়।
উদাহরণ:
const http = require('http');
const server = http.createServer((req, res) => {
// রেসপন্স হেডার সেট করা
res.setHeader('Content-Type', 'text/plain');
// HTTP স্ট্যাটাস কোড সেট করা
res.statusCode = 200; // 200 মানে OK
// রেসপন্স বডি লেখা
res.write('Hello, world!');
// রেসপন্স পাঠানো সম্পন্ন করা
res.end();
});
server.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});এখানে, রেসপন্সের হেডার হিসেবে Content-Type সেট করা হয়েছে এবং রেসপন্স বডিতে Hello, world! পাঠানো হয়েছে।
৩. Request এবং Response Object এর একসাথে ব্যবহার
কোনো HTTP সার্ভার তৈরি করার সময়, আপনি request এবং response অবজেক্টের মাধ্যমে ক্লায়েন্টের রিকোয়েস্ট এবং সার্ভারের রেসপন্স পরিচালনা করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে রিকোয়েস্টের পাথ এবং কুয়েরি প্যারামিটার অনুযায়ী রেসপন্স দেওয়া হচ্ছে:
উদাহরণ:
const http = require('http');
const server = http.createServer((req, res) => {
// রিকোয়েস্টের URL অনুযায়ী কাস্টম রেসপন্স
if (req.url === '/home') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Welcome to Home Page');
} else if (req.url.startsWith('/user')) {
let userId = new URL(req.url, `http://${req.headers.host}`).searchParams.get('id');
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify({ userId: userId, message: 'User data received' }));
} else {
res.statusCode = 404;
res.setHeader('Content-Type', 'text/plain');
res.end('Page not found');
}
});
server.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});এই কোডে, /home রিকোয়েস্টে একটি টেক্সট রেসপন্স পাঠানো হচ্ছে, /user রিকোয়েস্টে JSON ডেটা পাঠানো হচ্ছে এবং অন্য URL গুলি 404 রেসপন্স দিচ্ছে।
সারাংশ
- Request Object (
req): ক্লায়েন্ট থেকে সার্ভারে পাঠানো HTTP রিকোয়েস্টের তথ্য ধারণ করে। এর মধ্যে মেথড, URL, হেডার, প্যারামিটার এবং বডি থাকে। - Response Object (
res): সার্ভারের রেসপন্স তৈরি এবং পাঠানোর জন্য ব্যবহৃত হয়। এর মাধ্যমে স্ট্যাটাস কোড, হেডার এবং বডি সেট করা হয়। - Request এবং Response এর সংযোগ: Node.js এর HTTP সার্ভারে request এবং response অবজেক্টের মাধ্যমে ক্লায়েন্টের রিকোয়েস্ট গ্রহণ এবং রেসপন্স পাঠানো হয়।